/**
 * 
 */
package compilador.analizadorSintactico.categoriasSintacticas;

import javax.swing.tree.DefaultMutableTreeNode;

import compilador.analizadorLexico.simbolos.SimboloLexico;

/**
 * @author Nolberto Castellanos Rodriguez
 * @author Yurani Alejandra Salamanca Lotero
 *
 * Clase que representa la declaracion de un argumento
 */
public class Argumento 
{
//	-------------------------------------------------------------------------------------------------
//	ATRIBUTOS
//	-------------------------------------------------------------------------------------------------
	
	/**
	 * Atributo que contiene el valor del identificador de variable
	 */
	private SimboloLexico identificadorArgumento;
		
//	-------------------------------------------------------------------------------------------------
//	CONSTRUCTOR
//	-------------------------------------------------------------------------------------------------
	
	/**
	 * Constructor que permite crear un nuevo argumento.
	 * @param identificadorVariable. Nombre del argumento
	 */
	public Argumento(SimboloLexico identificadorArgumento) {
		super();
		this.identificadorArgumento = identificadorArgumento;
	}

//	-------------------------------------------------------------------------------------------------
//	METODOS
//	-------------------------------------------------------------------------------------------------	

	public String getJavaCode(){
		return identificadorArgumento.getLexema();
	}
	
	/**
	 * Metodo que permite agregar hojas al nodo de la clase
	 * @return el nodo de la clase con sus hojas
	 */
	public DefaultMutableTreeNode getArbolVisual(){
		DefaultMutableTreeNode miRaiz =  new  DefaultMutableTreeNode("Argumento");
		miRaiz.add(new DefaultMutableTreeNode(identificadorArgumento.getLexema()));
		
		return miRaiz;
	}
	
//	-------------------------------------------------------------------------------------------------
//	Getters & Setters
//	-------------------------------------------------------------------------------------------------
	
	/**
	 * Metodo que nos retorna el valor de identificadorVariable
	 * @return  identificadorVariable. Valor retornado
	 */
	public SimboloLexico getIdentificadorVariable() {
		return identificadorArgumento;
	}

	/**
	 * Metodo que permite asignar el valor de identificadorVariable
	 * @param identificadorVariable. Valor a asignar identificadorVariable
	 */
	public void setIdentificadorVariable(SimboloLexico identificadorVariable) {
		this.identificadorArgumento = identificadorVariable;
	}
}
